home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / ada / gwuada_9.zip / HDR.H < prev    next >
C/C++ Source or Header  |  1992-10-05  |  17KB  |  701 lines

  1. #ifndef _hdr_h
  2. #define _hdr_h
  3.  
  4. #define SEQ_NODE_INC 50
  5. #define SEQ_SYMBOL_INC    50
  6.  
  7. #include <stdlib.h>
  8. #include <stdio.h>
  9. #include <ctype.h>
  10. #include <string.h>
  11. #include "config.h"
  12. #include "arith.h"
  13.  
  14. typedef struct Declaredmap_s *Declaredmap;
  15.  
  16. #ifdef AMIABLE
  17. #else
  18. #include "symbol.h"
  19. #endif
  20.  
  21. typedef struct Span_s *Span;   /* pointer to spans information */
  22.  
  23. typedef struct Span_s {
  24.     short line;
  25.     short col;
  26. } Span_s;
  27.  
  28. typedef struct Node_s *Node; /* Node is pointer to Node_s */
  29. #define NODE_SIZE  sizeof(Node_s)
  30.  
  31. typedef struct Node_s
  32. {
  33. #ifndef IBM_PC
  34.     struct {
  35.     unsigned n_kind:8;
  36.     unsigned n_unit:8;
  37.     unsigned n_side:1;
  38.     unsigned n_overloaded:1;
  39.     } n_flags;
  40.     
  41.     short n_seq;
  42. #else
  43.     struct {
  44.     unsigned n_kind:8;
  45.     unsigned n_unit:8;
  46.     } n_flag1;
  47.  
  48.     struct {
  49.     unsigned n_side:1;
  50.     unsigned n_seq:14;
  51.     unsigned n_overloaded:1;
  52.     } n_flag2;
  53.  
  54. #endif
  55.  
  56.     union {
  57.     Node    n_ast1;
  58.     Span_s    n_span;
  59.     } nu1;
  60.  
  61.      union {
  62.     Node    n_ast2;
  63.     Tuple    n_list;
  64.     char    *n_val; 
  65.     int n_id;
  66.     } nu2;
  67.      union { 
  68.     Node    n_ast3;
  69.     Set    n_names;
  70.     Symbol    n_unq; 
  71.     } nu3;
  72.      union {
  73.     Node    n_ast4;
  74.     Set    n_ptypes;
  75.     Symbol    n_type; 
  76.     } nu4;
  77. #ifdef AMIABLE
  78.     Operand_s n_operand;
  79. #endif
  80. }  Node_s;
  81.  
  82. struct unit {
  83.     char *name;
  84.     int isMain;
  85.     char *libUnit;
  86.     struct {
  87.         char *fname;
  88.         char *obsolete;
  89.         char *currCodeSeg;
  90.         char *localRefMap;
  91.         char *compDate;
  92.     } libInfo;
  93.     struct {
  94.         char *preComp;
  95.         char *pragmaElab;
  96.         char *compDate;
  97.         char *symbols;
  98.         int  numberSymbols;
  99.         char *unitDecl;
  100.     } aisInfo;
  101.     struct {
  102.         char *tableAllocated;
  103.         int nodeCount;
  104.         int rootSeq;
  105.     } treInfo;
  106. };
  107.  
  108. #define MAX_UNITS 100
  109.  
  110. #ifdef IBM_PC
  111. #define N_KIND(p)    ((p)->n_flag1.n_kind)
  112. #define N_UNIT(p)    ((p)->n_flag1.n_unit)
  113. #define N_OVERLOADED(p)    ((p)->n_flag2.n_overloaded)
  114. #define N_SIDE(p)    ((p)->n_flag2.n_side)
  115. #define N_SEQ(p)    ((p)->n_flag2.n_seq)
  116. #else
  117. #define N_KIND(p)    ((p)->n_flags.n_kind)
  118. #define N_UNIT(p)    ((p)->n_flags.n_unit)
  119. #define N_OVERLOADED(p)    ((p)->n_flags.n_overloaded)
  120. #define N_SIDE(p)    ((p)->n_flags.n_side)
  121. #define N_SEQ(p)    ((p)->n_seq)
  122. #endif
  123. #define N_SPAN(p)    (&(p)->nu1.n_span)
  124. #define N_SPAN0(p)    ((p)->nu1.n_span.line)
  125. #define N_SPAN1(p)    ((p)->nu1.n_span.col)
  126. #define N_AST1(p)    ((p)->nu1.n_ast1)
  127. #define N_VAL(p)    ((p)->nu2.n_val)
  128. #define N_LIST(p)    ((p)->nu2.n_list)
  129. #define N_AST2(p)    ((p)->nu2.n_ast2)
  130. #define N_AST3(p)    ((p)->nu3.n_ast3)
  131. #define N_UNQ(p)    ((p)->nu3.n_unq)
  132. #define N_ID(p)         ((p)->nu2.n_id)
  133. #define N_NAMES(p)    ((p)->nu3.n_names)
  134. #define N_AST4(p)    ((p)->nu4.n_ast4)
  135. #define N_TYPE(p)    ((p)->nu4.n_type)
  136. #define N_PTYPES(p)    ((p)->nu4.n_ptypes)
  137. #ifdef AMIABLE
  138. #define N_OPERAND(p)    ((p)->n_operand)
  139. #endif
  140.  
  141. #define N_D_AST1 1
  142. #define N_D_AST2 2
  143. #define N_D_AST3 4
  144. #define N_D_AST4 8
  145. #define N_D_LIST 16
  146. #define N_D_VAL 32
  147. #define N_D_UNQ 64
  148. #define N_D_TYPE 256
  149.  
  150. #define N_AST1_DEFINED(p) (N_DEFINED[p]&N_D_AST1)
  151. #define N_AST2_DEFINED(p) (N_DEFINED[p]&N_D_AST2)
  152. #define N_AST3_DEFINED(p) (N_DEFINED[p]&N_D_AST3)
  153. #define N_AST4_DEFINED(p) (N_DEFINED[p]&N_D_AST4)
  154. #define N_VAL_DEFINED(p) (N_DEFINED[p]&N_D_VAL)
  155. #define N_UNQ_DEFINED(p) (N_DEFINED[p]&N_D_UNQ)
  156. #define N_TYPE_DEFINED(p) (N_DEFINED[p]&N_D_TYPE)
  157. #define N_LIST_DEFINED(p) (N_DEFINED[p]&N_D_LIST)
  158.  
  159. #define as_pragma  0
  160. #define as_arg    1
  161. #define as_obj_decl  2
  162. #define as_const_decl  3
  163. #define as_num_decl  4
  164. #define as_type_decl  5
  165. #define as_subtype_decl     6
  166. #define as_subtype_indic  7
  167. #define as_derived_type     8
  168. #define as_range  9
  169. #define as_range_attribute  10
  170. #define as_constraint  11
  171. #define as_enum     12
  172. #define as_int_type  13
  173. #define as_float_type  14
  174. #define as_fixed_type  15
  175. #define as_digits  16
  176. #define as_delta  17
  177. #define as_array_type  18
  178. #define as_box    19
  179. #define as_subtype  20
  180. #define as_record  21
  181. #define as_component_list  22
  182. #define as_field  23
  183. #define as_discr_spec  24
  184. #define as_variant_decl     25
  185. #define as_variant_choices  26
  186. #define as_string  27
  187. #define as_simple_choice  28
  188. #define as_range_choice     29
  189. #define as_choice_unresolved  30
  190. #define as_others_choice  31
  191. #define as_access_type    32
  192. #define as_incomplete_decl  33
  193. #define as_declarations     34
  194. #define as_labels  35
  195. #define as_character_literal  36
  196. #define as_simple_name    37
  197. #define as_call_unresolved  38
  198. #define as_selector  39
  199. #define as_all    40
  200. #define as_attribute  41
  201. #define as_aggregate  42
  202. #define as_parenthesis    43
  203. #define as_choice_list    44
  204. #define as_op  45
  205. #define as_in  46
  206. #define as_notin  47
  207. #define as_un_op  48
  208. #define as_int_literal    49
  209. #define as_real_literal     50
  210. #define as_string_literal  51
  211. #define as_null     52
  212. #define as_name     53
  213. #define as_qualify  54
  214. #define as_new_init  55
  215. #define as_new    56
  216. #define as_statements  57
  217. #define as_statement  58
  218. #define as_null_s  59
  219. #define as_assignment  60
  220. #define as_if  61
  221. #define as_cond_statements  62
  222. #define as_condition  63
  223. #define as_case     64
  224. #define as_case_statements  65
  225. #define as_loop     66
  226. #define as_while  67
  227. #define as_for    68
  228. #define as_forrev  69
  229. #define as_block  70
  230. #define as_exit     71
  231. #define as_return  72
  232. #define as_goto     73
  233. #define as_subprogram_decl  74
  234. #define as_procedure  75
  235. #define as_function  76
  236. #define as_operator  77
  237. #define as_formal  78
  238. #define as_mode     79
  239. #define as_subprogram  80
  240. #define as_call     81
  241. #define as_package_spec     82
  242. #define as_package_body     83
  243. #define as_private_decl     84
  244. #define as_use    85
  245. #define as_rename_obj  86
  246. #define as_rename_ex  87
  247. #define as_rename_pack    88
  248. #define as_rename_sub  89
  249. #define as_task_spec  90
  250. #define as_task_type_spec  91
  251. #define as_task     92
  252. #define as_entry  93
  253. #define as_entry_family     94
  254. #define as_accept  95
  255. #define as_delay  96
  256. #define as_selective_wait  97
  257. #define as_guard  98
  258. #define as_accept_alt  99
  259. #define as_delay_alt  100
  260. #define as_terminate_alt  101
  261. #define as_conditional_entry_call  102
  262. #define as_timed_entry_call  103
  263. #define as_abort  104
  264. #define as_unit     105
  265. #define as_with_use_list  106
  266. #define as_with     107
  267. #define as_subprogram_stub  108
  268. #define as_package_stub     109
  269. #define as_task_stub  110
  270. #define as_separate  111
  271. #define as_exception  112
  272. #define as_except_decl    113
  273. #define as_handler  114
  274. #define as_others  115
  275. #define as_raise  116
  276. #define as_generic_function  117
  277. #define as_generic_procedure  118
  278. #define as_generic_package  119
  279. #define as_generic_formals  120
  280. #define as_generic_obj    121
  281. #define as_generic_type     122
  282. #define as_gen_priv_type  123
  283. #define as_generic_subp     124
  284. #define as_generic  125
  285. #define as_package_instance  126
  286. #define as_function_instance  127
  287. #define as_procedure_instance  128
  288. #define as_instance  129
  289. #define as_length_clause  130
  290. #define as_enum_rep_clause  131
  291. #define as_rec_rep_clause  132
  292. #define as_compon_clause  133
  293. #define as_address_clause  134
  294. #define as_any_op  135
  295. #define as_opt    136
  296. #define as_list     137
  297. #define as_range_expression  138
  298. #define as_arg_assoc_list  139
  299. #define as_private  140
  300. #define as_limited_private  141
  301. #define as_code     142
  302. #define as_line_no  143
  303. #define as_index  144
  304. #define as_slice  145
  305. #define as_number  146
  306. #define as_convert  147
  307. #define as_entry_name  148
  308. #define as_array_aggregate  149
  309. #define as_record_aggregate  150
  310. #define as_ecall  151
  311. #define as_call_or_index  152
  312. #define as_ivalue  153
  313. #define as_qual_range  154
  314. #define as_qual_index  155
  315. #define as_qual_discr  156
  316. #define as_qual_arange    157
  317. #define as_qual_alength     158
  318. #define as_qual_adiscr    159
  319. #define as_qual_aindex    160
  320. #define as_check_bounds     161
  321. #define as_discr_ref  162
  322. #define as_row    163
  323. #define as_current_task     164
  324. #define as_check_discr    165
  325. #define as_end    166
  326. #define as_terminate 167
  327. #define as_exception_accept 168
  328. #define as_test_exception 169
  329. #define as_create_task 170
  330. #define as_predef    171
  331. #define as_deleted 172
  332. #define as_insert 173
  333. #define as_arg_convert 174
  334. #define as_end_activation 175
  335. #define as_activate_spec 176
  336. #define as_delayed_type 177
  337. #define as_qual_sub 178
  338. #define as_static_comp 179
  339. #define as_array_ivalue 180
  340. #define as_record_ivalue 181
  341. #define as_expanded 182
  342. #define as_choices 183
  343. #define as_init_call 184
  344. #define as_type_and_value 185
  345. #define as_discard 186
  346. #define as_unread 187
  347. #define as_string_ivalue 188
  348. #define as_instance_tuple 189
  349. #define as_entry_family_name 190
  350. #define as_astend    191
  351. #define as_astnull    192
  352. #define as_aggregate_list 193
  353. #define as_interfaced 194
  354. #define as_record_choice 195
  355. #define as_subprogram_